package com.tedu.api.thread;
/**
 * 软件---多个或者一个进程【理解：工厂】----很多线程【理解：工厂工人】
 * 线程创建方式三种：
 * 1.Thread类---创建线程，编写步骤：
 *                             ①类继承Thread线程类
 *                             ②run方法--线程功能
 *                             ③start方法--启动线程
 *   优点：使用比较方便，拓展性比较弱，继承线程，无法继承其他类【java类单继承】
 *        子类继承Thread,重写run方法，不利于线程复用
 * 2.Runnable接口---创建线程，编写步骤：
 *                               ①子类实现Runnable接口,必须实现run方法
 *                               ②Runnable父类引用指向子类【没有start方法】
 *                               ③创建Thread类，Runnable对象传入Thread构造器中
 *                               ④启动线程【start方法】
 * 3.匿名内部类方式----Lambda表达式
 */
public class RunableAPI {
    public static void main(String[] args) {
        //2.Runnable父类引用指向子类对象：多态 造型
        Runnable r = new MyRunnable();
        //线程启动必须是：start方法
        //3.创建Thread类---Runnable对象传入Thread构造器中
        Thread t1=new Thread(r);
        //4.启动线程
        t1.start();
        //练习：Runnable实现创建线程-----r1   t2
        Runnable r1=new MyRunnable1();
        Thread t2=new Thread(r1);
        t2.start();
    }
}
//1.子类实现Runnable并且重写run方法
class MyRunnable implements Runnable{
        //专门线程---提供功能方法 run()
        public void run() {
            for(int i=0;i<1000;i++){
                System.out.println("时间不等人，但是我等你");
            }
        }
    }
class MyRunnable1 implements Runnable{
    public void run() {
        for(int i=0;i<1000;i++){
            System.out.println("you滴答滴答me,I哗啦哗啦you!");
        }
    }
}

